package com.sxj.corejava.code08_常用类.枚举;

/**
 * @author 石小俊
 * @date 2024年04月18日 19:44
 */
public enum Season {
    // 枚举也是一个自定义的类型
    // 由于枚举主要是用于限制某个属性的值只能取哪些值
    // 因此,可以将对应类型设置为对应的枚举类型
    // 为了限制值的范围,枚举类型的构造函数不能被外部访问,只能内部创建
    // 即:枚举类型存在以下要求
    // 1.不能外部创建
    // 2.外部可以直接访问
    // 3.其值不能被修改
    // private static final Season spring = new Season("春天",1,3);
    // 在枚举类型中创建对象时,某些固定内容是需要省略的

    SPRING("春天", 1, 3),
    SUMMER("夏天", 4, 6),
    AUTUMN("秋天", 7, 9),
    WINTER("冬天", 10, 12),
    ALL;

    private String name; // 季节
    private int startMonth; // 季节的开始月份
    private int endMonth;   // 季节的结束月份

    // 对于构造方法,必须是私有的,不允许外部访问
    // 由于只能是私有的,在枚举类中可以省略private
    Season() {

    }

    Season(String name, int startMonth, int endMonth) {
        this.name = name;
        this.startMonth = startMonth;
        this.endMonth = endMonth;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStartMonth() {
        return startMonth;
    }

    public void setStartMonth(int startMonth) {
        this.startMonth = startMonth;
    }

    public int getEndMonth() {
        return endMonth;
    }

    public void setEndMonth(int endMonth) {
        this.endMonth = endMonth;
    }
}
